This invention relates generally to a system and method which enables pre-rasterization and caching of reusable objects in page description languages.
Page description language (PDL) is a language which allows the appearance of a printed page (such as how to form the type and graphic elements on it) to be described in a high-level, device-independent way. Rather than download a font to the printer, for example, the PDL gives the printer instructions on how to draw each character from outlines; graphics are produced in a similar way. Printing then becomes a two-stage process: an application program produces a description of the document in the page description language, which is then interpreted by a specific output device. A page description language can therefore serve as an interchange standard for transmission and storage of printable documents. Examples of PDLs include Adobe Systems, Inc.""s PostScript or Xerox""s Interpress.
Many production printing jobs, such as utility bills and bank statements, contain variable data on a template or form. In a production printing job, the PDL application program produces a description of each page of the document. If the same text or graphic elements repeat from page to page, the application program must produce a description of the repetitive text or graphics elements for each page, which is sent to the raster image processor (RIP) for generating the image. Generating the same images for each page takes time. In the case of production printing of jobs containing variable data and forms on monochrome printers, the performances of the RIPs has been good enough to maintain a speed compatible with the needs of production printing. But with the introduction of fast, full color printers suitable for production speeds of 35 pages per minute and up, the situation changed. The amount of data to be processed for each page may be quite large. To maintain productivity the RIP speed must at least match the printer speed. In color production jobs, this has been possible only with performance improvement techniques such as pre-rasterization and caching.
PDLs, such as Adobe PostScript, purport to contain defined operators to enable caching and pre-rasterization. Unfortunately, the specifications for these mechanisms are not precise enough, or they are inconsistent in different applications or they frequently include limitations. As a result, the standard PostScript operators cannot be used to efficiently manage resources or to enable pre-rasterization and caching. To overcome this problem, some vendors have modified the PostScript interpreters and augmented the standard set of PostScript operators with a set of new, proprietary operators. The proprietary operators usually provide very similar functionality to the standard ones, but not the same functionality. The rational being that since the new set of operators is proprietary, their functionality can be defined as wanted.
The problem with proprietary operators is that each vendor uses its own set of operators and thus user applications sending print files to the output devices need to accommodate each set of proprietary operators. Furthermore, if a xe2x80x9cPostScriptxe2x80x9d file containing the proprietary operators is sent to a fully compliant PostScript interpreter (i.e., one which does not implement the functions called by the proprietary operators), the job will abort with an error. In other words, the advantages of using a xe2x80x9cstandardxe2x80x9d PDL are lost.
In accordance with the invention, a system and method for enabling implementation-transparent caching of reusable objects in an application program using a language, which may be a page description language, with defined operators is described. A default operator from the language, which supports a set of default caching operations is selected. A set of additional caching operations for use in a specific caching implementation is created. The set of additional caching operations is associated with the defined operator. A key for selecting between the set of default caching operations and the set of additional caching operations is also defined. When the application program is executed, the application program automatically selects the set of default caching operations or the set of additional caching operations based on the value of the key.
The invention is particularly applicable to page description languages such as Adobe PostScript and other printer control languages. A PDL such as Adobe PostScript defines four operators to invoke default caching operations: defineresource, resourcestatus, findresource and execform. This set of caching operations enables caching to be performed to some extent. For example, it enables caching using virtual memory, but not external sources. If a reusable object such as a form is to be used from one job to another, it cannot be stored. Stored forms may not be modified during a print job. The invention enables the use of external caching resources, storing a reusable object for reuse across multiple jobs and modifying a stored reusable object (such as by scaling or rotation).
When a print job is sent to a printer using the invention, the application program uses the key to automatically determine if the set of default caching operations is to be used or if the set of additional operations is to be used. In this way, the actual caching implementation is transparent to the user. The user sends his job to a printer. If the additional caching operations are implemented, the print job proceeds quickly. If not, the print job takes longer to complete. Furthermore, the method described here will allow some PDLs, such as PostScript, to ignore the selection of additional operations (and thus use default ones) when they are not implemented. In this case, the caching implementation is even transparent to the application program.
The system and method of the invention provides a well-defined way to improve performance of a page description language interpreter in a PDL based printer controller and other devices or applications using the standard set of PDL operators.